const app = getApp() 
Page({
  //获取通讯录
  getxinxi() {
    const that = this;
    if (!app.globalData.userinfo || !app.globalData.userinfo[0] || !app.globalData.userinfo[0].num) {
      wx.showToast({ title: '用户信息异常，请重新登录', icon: 'none' });
      return;
    }
    const currentUserNum = app.globalData.userinfo[0].num; 
    wx.cloud.database().collection('xinxi')
      .where({
        $or: [
          // 当前用户是“添加方”（userA_id），对方是“被添加方”（userB_id），已好友
          { userA_id: currentUserNum, friend_status: 1 },
          // 当前用户是“被添加方”（userB_id），对方是“添加方”（userA_id），已好友
          { userB_id: currentUserNum, friend_status: 1 }
        ]
      })
      .get()
      .then(friendRes => {
        const friendNums = friendRes.data.map(item => {
          if (item.userA_id === currentUserNum) {
            return item.userB_id;
          }
          else {
            return item.userA_id;
          }
        });
        console.log('需排除的已好友用户 num 列表：', friendNums);
        wx.cloud.database().collection('user')
          .where({
            num: {
              $nin: friendNums,
              $ne: currentUserNum 
            }
          })
          .get()
          .then(userRes => {
            console.log('最终推荐列表（非好友用户）：', userRes.data);
            that.setData({
              userlist: userRes.data 
            });
          })
          .catch(userErr => {
            console.error('查询 user 集合（推荐列表）失败：', userErr);
            wx.showToast({ title: '推荐列表加载失败', icon: 'none' });
          });
      })
      .catch(friendErr => {
        console.error('查询 xinxi 集合（已好友记录）失败：', friendErr);
        wx.showToast({ title: '好友关系加载失败', icon: 'none' });
      });
  },
  //添加新朋友
  getxinpy(){
    wx.navigateTo({
      url: '/pages/xinpy/xinpy',
    })
  },
  //推荐的人加好友
  tianjia(e){
    let index
    let that=this
    console.log(e.currentTarget.dataset.index)
    index=e.currentTarget.dataset.index
    wx.cloud.database().collection('xinxi').add({
      data:{
        //添加方
        userA_id:app.globalData.userinfo[0].num,
        userA_Img:app.globalData.userinfo[0].faceImg,
        userA_nickName:app.globalData.userinfo[0].nickName,
        //被添加方
        userB_id:that.data.userlist[index].num,
        userB_Img:that.data.userlist[index].faceImg,
        userB_nickName:that.data.userlist[index].nickName,
        record:[],
        friend_status:0
      },
      success(res){
          console.log(res)
          wx.showToast({
            title: '请求添加成功',
          })
        }
    })
  },
  //我的好友
  getFriends() {
    const that = this;
    if (!app.globalData.userinfo || !app.globalData.userinfo[0] || !app.globalData.userinfo[0].num) {
      wx.showToast({ title: '用户信息异常，请重新登录', icon: 'none' });
      return;
    }
    const currentUserNum = app.globalData.userinfo[0].num;
    wx.cloud.database().collection('xinxi')
      .where({
        $or: [
          { userA_id: currentUserNum, friend_status: 1 }, // 我是A，对方是B
          { userB_id: currentUserNum, friend_status: 1 }  // 我是B，对方是A
        ]
      })
      .get()
      .then(friendRes => {
        const friendNums = friendRes.data.map(item => 
          item.userA_id === currentUserNum ? item.userB_id : item.userA_id
        );
        console.log('我的好友 num 列表：', friendNums);
        // 步骤3：到 user 集合中查询这些好友的完整信息
        if (friendNums.length === 0) {
          that.setData({ friendList: [] });
          return;
        }
        wx.cloud.database().collection('user')
          .where({
            num: { $in: friendNums } 
          })
          .get()
          .then(userRes => {
            console.log('我的好友完整信息：', userRes.data);
            that.setData({ friendList: userRes.data });
          })
          .catch(err => {
            console.error('查询好友信息失败：', err);
            wx.showToast({ title: '好友列表加载失败', icon: 'none' });
          });
      })
      .catch(err => {
        console.error('查询好友关系失败：', err);
        wx.showToast({ title: '好友关系加载失败', icon: 'none' });
      });
  },
  toliaotian(e) {

    const friendNum = e.currentTarget.dataset.friendnum;
    if (!friendNum) {
      wx.showToast({ title: '未获取到好友信息', icon: 'none' });
      return;
    }
    const currentUserNum = app.globalData.userinfo?.[0]?.num;
    if (!currentUserNum) {
      wx.showToast({ title: '请先登录', icon: 'none' });
      return;
    }
    wx.cloud.database().collection('xinxi')
      .where({
        $or: [
          // 情况1：当前用户是 userA，好友是 userB
          { userA_id: currentUserNum, userB_id: friendNum, friend_status: 1 },
          // 情况2：当前用户是 userB，好友是 userA
          { userA_id: friendNum, userB_id: currentUserNum, friend_status: 1 }
        ]
      })
      .get()
      .then(res => {
        if (res.data.length === 0) {
          wx.showToast({ title: '未找到聊天记录', icon: 'none' });
          return;
        }
        const xinxiDocId = res.data[0]._id;
        wx.navigateTo({
          url: `/pages/liaotian/liaotian?id=${xinxiDocId}` 
        });
      })
      .catch(err => {
        console.error('查询聊天文档失败：', err);
        wx.showToast({ title: '跳转失败', icon: 'none' });
      });
  },
  
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getxinxi()
    this.getFriends()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getxinxi()
    this.getFriends()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})